#pragma once

#include <QObject>
#include <sensor_msgs/msg/point_cloud2.hpp>
#include <pcl/features/normal_3d.h>


namespace rviz_custom_plugins
{

namespace utils
{

class BagMapNotifier : public QObject 
{
    Q_OBJECT
public:
    static BagMapNotifier* getInstance() {
        static BagMapNotifier notifier;
        return &notifier;
    }

signals:

    void pointCloudLoaded(pcl::PointCloud<pcl::PointXYZINormal>::Ptr pcdPointNormal);
    void pointCloudFiltered(pcl::PointCloud<pcl::PointXYZINormal>::Ptr pcdPointNormal);

    void mapPointSelected(QString nameSpace, int pclIndex,  pcl::PointXYZINormal& point);

private:
    BagMapNotifier() = default;
    Q_DISABLE_COPY(BagMapNotifier)  // 禁止拷贝
};

}

}
